package com.pontodroid;

import java.util.ArrayList;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class UsuarioBD {
	
	private Integer USU_CODIGO 	 	 = 0;
	private String  USU_NOME     	 = "";
	private String  USU_LOGIN        = "";
	private String  USU_SENHA		 = "";
	private String  USU_NUMPIS		 = "";
	private Integer USU_RANDOM		 = 0;
	private String  USU_CHAVEPUB     = "";
	private String  USU_CHAVEPRIVADA = "";
	private final String NOME_TABELA = "USUARIO";		
	private SQLiteDatabase objDados;
	private String[] CAMPOS = new String[] { "USU_CODIGO","USU_NOME","USU_LOGIN","USU_SENHA","USU_NUMPIS","USU_RANDOM","USU_CHAVEPUB"};

	public UsuarioBD(SQLiteDatabase pObjDados) {
		objDados = pObjDados;
	}			
	
	public Boolean CREATE_TABLE(Boolean pIf_exists) {
		String pSql = "CREATE TABLE ";

		if (pIf_exists)
			pSql += " IF NOT EXISTS ";

		pSql += NOME_TABELA + " (" + "USU_CODIGO INTEGER PRIMARY KEY, "
								   + "USU_NOME   VARCHAR(120),        "
								   + "USU_LOGIN  VARCHAR(40),		  "
								   + "USU_SENHA  VARCHAR(20),         "
								   + "USU_NUMPIS VARCHAR(255),        "
								   + "USU_RANDOM INTEGER,             "
								   + "USU_CHAVEPUB     TEXT,          "
								   + "USU_CHAVEPRIVADA TEXT )         ";

		objDados.execSQL(pSql);
		return true;
	}

	public void DROP_TABELA() {
		objDados.execSQL("DROP TABLE IF EXISTS " + NOME_TABELA);
	}
	
	public ContentValues getContent(){
		ContentValues biblioteca = new ContentValues();
		if (USU_CODIGO > 0)
			biblioteca.put("USU_CODIGO", USU_CODIGO);
		biblioteca.put("USU_NOME",  USU_NOME);
		biblioteca.put("USU_LOGIN", USU_LOGIN);
		biblioteca.put("USU_SENHA", USU_SENHA);
		biblioteca.put("USU_NUMPIS",USU_NUMPIS);
		biblioteca.put("USU_RANDOM",USU_RANDOM);
		biblioteca.put("USU_CHAVEPUB",USU_CHAVEPUB);
		biblioteca.put("USU_CHAVEPRIVADA",USU_CHAVEPRIVADA);
		return biblioteca;
	}

	public void INSERT() {
		//GERA CODIGO
		ContentValues biblioteca = getContent();
		objDados.insert(NOME_TABELA, null, biblioteca);		
	}
	
	public void UPDATE(String pSQLWhere){
		ContentValues biblioteca = getContent();	
		objDados.update(NOME_TABELA, biblioteca, pSQLWhere, null);
	}

	public ArrayList<UsuarioBD> SELECT(String pCondicao) {
		
		ArrayList<UsuarioBD> list = new ArrayList<UsuarioBD>();
		Cursor cursor = objDados.query(NOME_TABELA, CAMPOS, pCondicao, null, null, null, null);
		
		if (cursor.moveToFirst()) {
			do {
				UsuarioBD objCad = getUsuCursor(cursor);
				list.add(objCad);

			} while (cursor.moveToNext());
		}
		if (cursor != null && !cursor.isClosed()) {
			cursor.close();
		}
		return list;
	}

	public UsuarioBD SELECT_NVG(String pCondicao) {
		Cursor cursor = objDados.query(NOME_TABELA, CAMPOS, pCondicao, null, null, null, null);
		return getUsuCursor(cursor);
	}
	
	public UsuarioBD getUsuCursor(Cursor pCursor){
		UsuarioBD objCad = null;
		if(pCursor.getCount() > 0){
			objCad = new UsuarioBD(objDados);
			objCad.USU_CODIGO = pCursor.getInt(0);
			objCad.USU_NOME   = pCursor.getString(1);
			objCad.USU_LOGIN  = pCursor.getString(2);
			objCad.USU_SENHA  = pCursor.getString(3);
			objCad.USU_NUMPIS = pCursor.getString(4);
			objCad.USU_RANDOM = pCursor.getInt(5);
			objCad.USU_CHAVEPUB = pCursor.getString(6);
			objCad.USU_CHAVEPRIVADA = pCursor.getString(7);
		}	
		return objCad;
	}

}
